package com.link2room.rodimus.facade;


import com.link2room.common.dto.param.base.BaseL2rParamDto;
import com.link2room.common.jpa.result.QueryResult;
import com.link2room.rodimus.dto.param.api.MallGoodsApiParamDto;
import com.link2room.rodimus.dto.param.base.MallGoodPriceTypeDto;
import com.link2room.rodimus.dto.param.base.MallGoodTypeDto;
import com.link2room.rodimus.dto.param.manager.*;
import com.link2room.rodimus.dto.result.base.MallGoodBaseApiDto;
import com.link2room.rodimus.dto.result.base.MallGoodCategoryDto;
import com.link2room.rodimus.dto.result.base.MallGoodPriceDto;
import com.link2room.rodimus.dto.result.base.MallOrderBaseDto;

/**
 * Created by VegetaKo on 2017/1/20.
 */
public interface IMallManagerFacadeService {
    QueryResult<MallOrderBaseDto> getOrders(MallOrderManagerParamDto mallOrderManagerParamDto) throws Exception;
    MallOrderBaseDto getOrder(MallOrderManagerParamDto mallOrderManagerParamDto) throws Exception;
    void modifyOrder(MallOrderManagerParamDto mallOrderManagerParamDto) throws Exception;

    /**
     * 商品列表
     * @param mallGoodsManagerParamDto
     * @return
     * @throws Exception
     */
    QueryResult<MallGoodBaseApiDto> getGoods(MallGoodsManagerParamDto mallGoodsManagerParamDto) throws Exception;
    @Deprecated
    void modifyGood(MallGoodsManagerParamDto mallGoodsManagerParamDto) throws Exception;

    /**
     * 修改商品
     */
    void updateMallGood(MallGoodsUpdateParamDto paramDto) throws Exception;


    MallGoodBaseApiDto getGoodByCode(MallGoodsFindParamDto paramDto) throws Exception;

    /**
     * 创建商品
     */
    void createMallGood(MallGoodCreateParamDto paramDto) throws Exception;
    /**
     * 查找产品类目列表
     * @param paramDto
     * @return
     */
    QueryResult<MallGoodCategoryDto> getGoodCategorise(MallGoodCategoryFindParamDto paramDto) throws Exception;

    /**
     * 创建商品类目
     * @param paramDto
     */
    void createGoodCategories(MallGoodCategoryCreateParamDto paramDto) throws Exception;

    /**
     * 查找产品类目
     * @param paramDto
     * @return
     */
    MallGoodCategoryDto getMallGoodCategory(MallGoodCategoryFindParamDto paramDto) throws Exception;

    /**
     * 更新差评类目
     * @param paramDto
     * @return
     * @throws Exception
     */
    void updateMallGoodCategory(MallGoodCategoryUpdateParamDto paramDto) throws Exception;

    /**
     * 删除产品类目
     * @param paramDto
     * @throws Exception
     */
    void deleteMallGoodCategory(MallGoodCategoryDeleteParamDto paramDto) throws Exception;

    /**
     * 商品类型列表
     * @return
     */
    QueryResult<MallGoodTypeDto> getMallGoodType(BaseL2rParamDto paramDto) throws Exception;


    /**
     *商城商品价格列表
     * @param priceFindParamDto
     * @return
     */
    QueryResult<MallGoodPriceDto> mallGoodPrices(MallGoodPriceFindParamDto priceFindParamDto) throws Exception;

    /**
     * 创建商品价格
     * @param paramDto
     * @throws Exception
     */
    void createMallGoodPrices(MallGoodPriceCreateParamDto paramDto) throws Exception;

    /**
     * 商品价格
     * @param paramDto
     * @throws Exception
     */
    void updateMallGoodPrices(MallGoodPriceUpdateParamDto paramDto) throws Exception;

    /**
     * 删除价格
     */
    void deleteMallGoodPrice(MallGoodPriceDeleteParamDto paramDto) throws Exception;

    /**
     * 商城商品价格类型列表
     * @param paramDto
     * @return
     * @throws Exception
     */
    QueryResult<MallGoodPriceTypeDto> mallGoodPriceTpyes(BaseL2rParamDto paramDto) throws Exception;




}
